package com.hy.mydesktop.client.component.mvc.factory;

import java.util.List;

import com.extjs.gxt.ui.client.mvc.Controller;
import com.hy.mydesktop.client.component.event.AppEvents;
import com.hy.mydesktop.client.component.mvc.controller.meta.WindowControllerModelEnum;
import com.hy.mydesktop.client.component.mvc.factory.util.ControllerFactoryUtil;
import com.hy.mydesktop.client.mvc.dataload.DataLoadController;
import com.hy.mydesktop.client.mvc.dataload.GridDataLoadController;
import com.hy.mydesktop.shared.persistence.domain.gxt.GxtComponentControllerMetaNodeModel;

/**
 * 
 * <ul>
 * <li>开发作者：花宏宇</li>
 * <li>设计日期：2010-9-30；时间：上午11:39:50</li>
 * <li>类型名称：GridDataLoadControllerFactory</li>
 * <li>设计目的：</li>
 * </ul>
 * <ul>
 * <b>修订编号：</b>
 * <li>修订日期：</li>
 * <li>修订作者：</li>
 * <li>修订原因：</li>
 * <li>修订内容：</li>
 * </ul>
 */
public class GridDataLoadControllerFactory {
	
	/**
	 * registerEventTypes(AppEvents.DESKTOP_SHORTCUT_ONCLICK_INIT);
	 * 1 注册事件
	 * 2 handleEvent
	 * 
	 */
		
		public static Controller createGridDataLoadController(GxtComponentControllerMetaNodeModel gxtComponentMetaNodeModel){
			
			return configureGridDataLoadController(gxtComponentMetaNodeModel);
		}
		
		/**
		 * 
		 * <ul>
		 * <li>方法含义：对窗口的属性进行配置</li>
		 * <li>方法作者：汤莉</li>
		 * <li>编写日期：2010-8-29；时间：下午下午03:56:36</li>
		 * </ul>
		 * <ul>
		 * <b>修订编号：</b>
		 * <li>修订日期：</li>
		 * <li>修订作者：</li>
		 * <li>修订原因：</li>
		 * <li>修订内容：</li>
		 * </ul>
		 * @param gxtComponentMetaNodeModel
		 * @return
		 */
		private static Controller configureGridDataLoadController(GxtComponentControllerMetaNodeModel gxtComponentMetaNodeModel){
			
			GridDataLoadController GridDataLoadController = createDefaultGridDataLoadController();
			
			return ControllerFactoryUtil.configureWindow(GridDataLoadController, gxtComponentMetaNodeModel);

			//注册WindowController，需要监听的事件
			/*if(gxtComponentMetaNodeModel.get(WindowControllerModelEnum.REGISTEREVENTTYPES.name().toLowerCase())!=null){
				
				List<String> appEventCodes = gxtComponentMetaNodeModel.get(WindowControllerModelEnum.REGISTEREVENTTYPES.name().toLowerCase());
				for (String code : appEventCodes) {
					Integer i = Integer.valueOf(code);
					switch (i) {
			            case 1://Integer.valueOf("0001")
			            	GridDataLoadController.addRegisterEventType(AppEvents.Login);
			            	
			                break;
			            case 2://Integer.valueOf("0002")
			            	GridDataLoadController.addRegisterEventType(AppEvents.DESKTOP_INIT_FOR_LOGGED_IN_USER);	
			                break;
			            case 3://Integer.valueOf("0003")
			            	GridDataLoadController.addRegisterEventType(AppEvents.DESKTOP_SHORTCUT_ONCLICK_INIT);	
			                break;
			            case 6://Integer.valueOf("0006")
			            	GridDataLoadController.addRegisterEventType(AppEvents.DESKTOP_WINDOW_INIT);
			                break;
			            case 7://Integer.valueOf("0007")
			            	GridDataLoadController.addRegisterEventType(AppEvents.DESKTOP_APPLICATION_INIT);
			                break;
			            case 101://Integer.valueOf("0101")
			            	GridDataLoadController.addRegisterEventType(AppEvents.WINDOW_ININT);
			                break;
						case 401://Integer.valueOf("0101")
				            	GridDataLoadController.addRegisterEventType(AppEvents.LOAD_DATA_EVENT);
				                break;
		           		           
			            default:
			                break;
			        }
				}
			
			}
			//为Controller，添加它对应的视图View的标识 ViewData
			if(gxtComponentMetaNodeModel.get(WindowControllerModelEnum.VIEWDATA.name().toLowerCase())!=null){
				
				String viewDataCode = gxtComponentMetaNodeModel.get(WindowControllerModelEnum.VIEWDATA.name().toLowerCase());
				GridDataLoadController.setViewData(viewDataCode);
			
			}
			//为Controller添加它的标识 id
			if(gxtComponentMetaNodeModel.get(WindowControllerModelEnum.ID.name().toLowerCase())!=null){
				
				String id = gxtComponentMetaNodeModel.get(WindowControllerModelEnum.ID.name().toLowerCase());
				GridDataLoadController.setId(id);
			
			}
					
			return GridDataLoadController;*/
		}
		
		
		private static GridDataLoadController createDefaultGridDataLoadController(){
			GridDataLoadController gridDataLoadController = new GridDataLoadController();
			
			return gridDataLoadController;
		}

}
